const ffi = require('ffi-napi')
var ref = require('ref-napi')
var ArrayType = require('ref-array-napi')
const path = require('path')
let { arch } = process // x64

//默认加载 32位 DLL
let dllFilePath = path.resolve('./resources/NetGraphMaxFlow_32')
if (arch === 'x64') {
  dllFilePath = path.resolve('./resources/NetGraphMaxFlow_64')
}

// 映射到C语言 int数组类型,并导出
const IntArray = ArrayType(ref.types.int)

// 加载 DLL文件,无需写扩展名,将DLL中的函数映射成JS方法
// 导出为JS方法
const MyDellDemo = new ffi.Library(dllFilePath, {
  // 方法名必须与C函数名一致
  MaxFlow: ['int', [IntArray]]
})

module.exports = {
  MaxFlow(arr) {
    return MyDellDemo.MaxFlow(arr)
  }
}